<?php
declare (strict_types = 1);

namespace app\model;

use app\BaseModel;

/**
 * Note模型
 */
class Note extends BaseModel
{
    // 设置表名
    protected $name = 'notes';
    
    // 设置字段信息
    protected $schema = [
        'id'               => 'int',
        'user_id'          => 'int',
        'avatar'           => 'string',
        'nickname'         => 'string',
        'gender'           => 'int',
        'age'              => 'int',
        'city'             => 'string',
        'wechat_id'        => 'string',
        'wechat_qrcode'    => 'string',
        'status'           => 'int',
        'create_time'      => 'datetime',
        'update_time'      => 'datetime',
    ];
    
    // 设置自动时间戳
    protected $autoWriteTimestamp = true;
    
    /**
     * 获取性别文本
     */
    public function getGenderTextAttr()
    {
        $genders = [0 => '未知', 1 => '男', 2 => '女'];
        return $genders[$this->gender] ?? '未知';
    }
    
    /**
     * 获取状态文本
     */
    public function getStatusTextAttr()
    {
        $statuses = [0 => '已抽取', 1 => '未抽取'];
        return $statuses[$this->status] ?? '未知';
    }
    
    /**
     * 获取纸条所属用户
     */
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }
    
    /**
     * 获取纸条抽取记录
     */
    public function draw()
    {
        return $this->hasOne(NoteDraw::class, 'note_id', 'id');
    }
    
    /**
     * 设置纸条状态为已抽取
     */
    public function setDrawn()
    {
        return $this->save(['status' => 0]);
    }
    
    /**
     * 获取头像地址
     * 如果不包含 http 或 https 前缀，则自动添加
     */
    public function getAvatarAttr($value)
    {
        if (empty($value)) {
            return $value;
        }
        
        // 检查是否已经包含 http 或 https 前缀
        if (strpos($value, 'http://') === 0 || strpos($value, 'https://') === 0) {
            return $value;
        }
        
        // 获取配置中的域名前缀
        $domainPrefix = \think\facade\Env::get('app.upload_url', 'http://admin-mh.xianxia99.com');
        
        // 确保域名以 / 结尾
        if (substr($domainPrefix, -1) !== '/') {
            $domainPrefix .= '/';
        }
        
        // 确保文件路径不以 / 开头
        if (strpos($value, '/') === 0) {
            $value = substr($value, 1);
        }
        
        return $domainPrefix . $value;
    }
    
    /**
     * 获取微信二维码地址
     * 如果不包含 http 或 https 前缀，则自动添加
     */
    public function getWechatQrcodeAttr($value)
    {
        if (empty($value)) {
            return $value;
        }
        
        // 检查是否已经包含 http 或 https 前缀
        if (strpos($value, 'http://') === 0 || strpos($value, 'https://') === 0) {
            return $value;
        }
        
        // 获取配置中的域名前缀
        $domainPrefix = \think\facade\Env::get('app.upload_url', 'http://admin-mh.xianxia99.com');
        
        // 确保域名以 / 结尾
        if (substr($domainPrefix, -1) !== '/') {
            $domainPrefix .= '/';
        }
        
        // 确保文件路径不以 / 开头
        if (strpos($value, '/') === 0) {
            $value = substr($value, 1);
        }
        
        return $domainPrefix . $value;
    }
} 